//指针的输入输出特性
//指针的输入特性是,指针做输入参数,在主调函数分配空间
//指针的输出特性是,指针做输出参数,在被调函数分配空间
# include<stdio.h>
# include<string.h>
# include<malloc.h>
/*void fun(char *p)
{
	if (p == NULL)
		return ;
	strcpy(p,"abcdef");
}*/
void fun2(char **q,int *len)
{
	if(q == NULL)
		return ;
	char *p = (char*)malloc(100);
	if ( p == NULL)
		return ;
	strcpy(p ,"abcdef");
    //printf ("%s",p);
	*q = p;
	*len = strlen(p);
	
}
int main (void)	
{
//	char *p = NULL;
//	fun(p);//错误,没有给p指向正确的内存空间
	
	//输入
//	char arr[100]= "0";
//	fun (arr);//正确,在主调函数分配了一段空间
//	printf("%s\n",arr);

	//输出
	char *q=NULL ;
    //char arr[100] = {0};
    //q = arr;
	int len = 0;
	fun2(&q,&len);

	printf ("%s\n%d",*q,len);

	return 0;
}
